package com.naiterui.ehp.bs.doctor.service.notify;

import java.util.List;

import com.naiterui.ehp.bp.bo.recommend.param.RecomInfoParamBO;
import com.naiterui.ehp.bp.support.exception.BusinessException;


/**
 * 通知业务处理接口
 *
 * @author Amber
 * @since 1.0.0
 */
public interface INotifyService {
    /**
     * 备案状态变更通知
     * INotifyService.notifyRecordStatusChange()
     *
     * @param doctorId
     * @param newStatus
     * @param failReason TODO
     *
     * @throws BusinessException
     * @Author Amber
     * @Date 2017年8月6日
     * @since 1.0.0
     */
    void notifyRecordStatusChange(Long doctorId, Integer newStatus, String failReason) throws BusinessException;

    /**
     * 认证状态变更通知
     * INotifyService.notifyAuthStatusChange()
     *
     * @param doctorId
     * @param newStatus
     * @param failReason
     *
     * @throws BusinessException
     * @Author Amber
     * @Date 2017年8月10日
     * @since 1.0.0
     */
    void notifyAuthStatusChange(long doctorId, int newStatus, String failReason);

    /**
     * 发送购药通知 全购、取消没有有push消息，少购既有push消息也有系统通知
     *
     * @param recomBOList
     *
     * @Author heichou
     * @Date 2018年10月18日
     * @since 3.4.0
     * INotifyService.notifyRecomBuy()
     */
    void notifyRecomBuy(List<RecomInfoParamBO> recomBOList);

    /**
     * 给医生发送复诊提醒
     *
     * @param doctorId
     * @param doctorName
     * @param patientName
     *
     * @throws BusinessException
     */
    void sendReferralNotice(Long doctorId, Long patientId, String doctorName, String patientName) throws BusinessException;

    /**
     * 给医生发送会话评价通知
     * @param doctorId
     * @throws BusinessException
     */
    void sendConsultCommentNotice(Long doctorId, Long commentId) throws BusinessException;

    /**
     * 给医生发送患者随访填写通知
     * 
     * @param doctorId
     * @throws BusinessException
     */
    void sendFollowUpNotice(Long doctorId, Long followUpId, Integer type) throws BusinessException;
}
